package com.nidu.demo.oauth2.dto;

import com.nidu.demo.base.BaseCmd;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List;

@Data
@EqualsAndHashCode(callSuper = true)
@Schema(description = "Oauth2申请授权对象")
public class OAuth2AuthorizeCmd extends BaseCmd {

    /**
     * 响应类型
     * 1. authorization_code：授权码模式
     * 2. implicit：简化模式
     */
    @NotEmpty(message = "grant_type 不能为空")
    private String grantType;

    /**
     * 客户端编码
     */
    @NotEmpty(message = "client_code 不能为空")
    private String clientCode;

    /**
     * 客户端密钥
     */
    @NotEmpty(message = "客户端密钥不能为空")
    private String clientSecret;

    /**
     * 重定向URI
     */
    @NotEmpty(message = "redirect_uri 不能为空")
    private String redirectUri;

    /**
     * 授权范围
     */
    private List<String> scopes;

    /**
     * 状态值
     */
    private String state;

    /**
     * 用户ID
     */
    @NotNull(message = "用户编号不能为空")
    private Long userId;

    /**
     * 是否批准
     */
    @NotNull(message = "是否批准不能为空")
    private Boolean approved;
}